{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "4b8c2829",
   "metadata": {},
   "source": [
    "# 云账单-比例规则开发文档-20221026\n",
    "##### 步骤\n",
    "1. 明细比例数据（动态、静态）\n",
    "2. 比例汇总\n",
    "3. 比例2次汇总\n",
    "##### 数据结构\n",
    "```\n",
    "pu_type\n",
    "pu\n",
    "service_type\n",
    "service_name\n",
    "online\n",
    "offline\n",
    "adx\n",
    "sdk\n",
    "hotapp\n",
    "e_com\n",
    "applist\n",
    "san_sdk\n",
    "```"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "ddb9c0a5",
   "metadata": {},
   "source": [
    "# 一、明细数据\n",
    "publisher成本：计算出publisher成本后，按照此比例归入电商和保留在广告\n",
    "> 电商   0.915483146\t\n",
    "> 非电商  0.084516854\n",
    "```sql\n",
    "-- camp_id>6447\n",
    "t_inner_e_com as (\n",
    "            select \n",
    "            sum(case when order_type=2 or m1.camp_id<6435 then cnt else 0 end) e_com_req\n",
    "            ,sum(case when order_type=2 or m1.camp_id<6435 then 0 else cnt end) un_e_com_req\n",
    "            ,sum(cnt) total_req\n",
    "            from (select \n",
    "                    camp_id \n",
    "                     ,sum(recall_pv1) cnt\n",
    "                    from ads_dmp.dwb_ads_cloud_cost_rate_split_midas \n",
    "                    where dt='20221024' and app_type=3\n",
    "                    group by 1\n",
    "                )m1\n",
    "                left join \n",
    "                (select id,order_type from ads_dmp.dim_ads_midas_t_campaign_info\n",
    "                )m2 on m1.camp_id=m2.id\n",
    "        )\n",
    "```"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "485b3a6e",
   "metadata": {},
   "source": [
    "# 二、专属成本applist\n",
    "专属成本：主要区分电商、内部各app_id\n",
    "```\n",
    "ALL广告 基础服务 ShareStore applist 1053\n",
    "ALL广告 基础服务 Spark applist 66\n",
    "ALL广告 基础服务 Flink applist 57\n",
    "ALL广告 基础服务 Redis applist 244\n",
    "共计，1420\n",
    "```\n",
    "分摊pu\n",
    "```sql\n",
    "select \n",
    "app_id\n",
    ",sum(applistlength) pv_cnt\n",
    "from ads_dmp.dwb_ads_cloud_cost_rate_split_midas \n",
    "where dt='20221024'\n",
    "group by 1\n",
    "```\n",
    "> apptype 百分比<br/>\n",
    "> 1\t78.81%<br/>\n",
    "> 3\t11.16%<br/>\n",
    "> 4\t10.02%<br/>\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "86ec5f1a",
   "metadata": {},
   "source": [
    "# 三、特殊比例\n",
    "#### （一）服务Midas\n",
    "```sql\n",
    "t_midas_log as (\n",
    "            select \n",
    "                CASE WHEN app_type=3 THEN 'publisher-rtb'\n",
    "                 WHEN load_type=0 THEN 'online'\n",
    "                 WHEN load_type=1 THEN 'online'\n",
    "                 WHEN load_type=3 THEN 'online'\n",
    "                 ELSE 'offline' END traffic_type\n",
    "                 ,sum(req_pv1) pv_cnt\n",
    "                from ads_dmp.dwb_ads_cloud_cost_rate_split_midas \n",
    "                where dt='{run_date}'\n",
    "                group by 1\n",
    "        ),\n",
    "t_midas_pv1 as (\n",
    "            select \n",
    "                sum(case when business_line='online' then pv_cnt else 0 end) online\n",
    "                ,sum(case when business_line='offline' then pv_cnt*1.5 else 0 end) offline\n",
    "            from  t_midas_log\n",
    "        ),\n",
    "t_service_midas as (\n",
    "            select \n",
    "            '在线服务' service_type, 'midas' service\n",
    "            ,1.0*pv_online/(pv_online+pv_offline) online\n",
    "            ,1.0*pv_offline/(pv_online+pv_offline) offline\n",
    "            ,0 ca\n",
    "            ,0 adx\n",
    "            ,0 sdk\n",
    "            ,0 san_aff\n",
    "            ,0 san_pub\n",
    "            ,0 ecom\n",
    "            ,0 applist\n",
    "            ,0 san_sdk\n",
    "            from t_midas_pv1\n",
    "        ),\n",
    "\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "851be3ef",
   "metadata": {},
   "outputs": [],
   "source": [
    "####（二）固定比例"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "59f7383a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "在线服务\tPublisher\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0\n",
      "在线服务\tCA\t0\t0\t1\t0\t0\t0\t0\t0\t0\t0\n",
      "在线服务\tadx\t0\t0\t0\t1\t0\t0\t0\t0\t0\t0\n",
      "在线服务\tAffilliate\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\n",
      "基础服务\tGA\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\n",
      "基础服务\tCDN\t0.994538492\t0\t0\t0\t0\t0\t0.005461508\t0\t0\t0\n",
      "基础服务\tS3\t0.8504\t0\t0.0088\t0.0034\t0.0009\t0.1348\t0.0017\t0\t0\t0\n",
      "基础服务\tadcs日志采集\t0.9557\t0\t0.0028\t0\t0\t0.0415\t0\t0\t0\t0\n",
      "基础服务\tSpark\t0.8278\t0\t0.0759\t0.0038\t0.0188\t0\t0.0737\t0\t0\t0\n",
      "分摊\t分摊-数分\t0.252\t0\t0.467\t0.003\t0.022\t0.255\t0.001\t0\t0\t0\n",
      "分摊\t分摊-other\t0.252\t0\t0.467\t0.003\t0.022\t0.255\t0.001\t0\t0\t0\n",
      "分摊\t分摊-beyla\t0.995\t0\t0\t0.0025\t0.0025\t0\t0\t0\t0\t0\n"
     ]
    }
   ],
   "source": [
    "path='/Users/msxr/develop/code/002/ads-bigdata-datastudio/projects/ads_cloud_cost2/docs/dim/'\n",
    "fmt='{service_type}\\t{service_name}\\t{online}\\t{offline}\\t{ca}\\t{adx}\\t{sdk}\\t{san_aff}\\t{san_pub}\\t{ecom}\\t{applist}\\t{san_sdk}'\n",
    "adict=[\n",
    "    {'service_type':'在线服务','service_name':'Publisher'\n",
    "     ,'online':0,'offline':0,'ca':0,'adx':0,'sdk':0,'san_aff':0,'san_pub':1,'ecom':0,'applist':0,'san_sdk':0},\n",
    "    {'service_type':'在线服务','service_name':'CA'\n",
    "     ,'online':0,'offline':0,'ca':1,'adx':0,'sdk':0,'san_aff':0,'san_pub':0,'ecom':0,'applist':0,'san_sdk':0},\n",
    "    {'service_type':'在线服务','service_name':'adx'\n",
    "     ,'online':0,'offline':0,'ca':0,'adx':1,'sdk':0,'san_aff':0,'san_pub':0,'ecom':0,'applist':0,'san_sdk':0},\n",
    "    {'service_type':'在线服务','service_name':'Affilliate'\n",
    "     ,'online':0,'offline':0,'ca':0,'adx':0,'sdk':0,'san_aff':1,'san_pub':0,'ecom':0,'applist':0,'san_sdk':0},\n",
    "    {'service_type':'基础服务','service_name':'GA'\n",
    "     ,'online':1,'offline':0,'ca':0,'adx':0,'sdk':0,'san_aff':0,'san_pub':0,'ecom':0,'applist':0,'san_sdk':0},\n",
    "    {'service_type':'基础服务','service_name':'CDN'\n",
    "     ,'online':0.994538492,'offline':0,'ca':0,'adx':0,'sdk':0,'san_aff':0,'san_pub':0.005461508,'ecom':0,'applist':0,'san_sdk':0},\n",
    "     {'service_type':'基础服务','service_name':'S3'\n",
    "     ,'online':0.8504,'offline':0,'ca':0.0088,'adx':0.0034,'sdk':0.0009,'san_aff':0.1348,'san_pub':0.0017,'ecom':0,'applist':0,'san_sdk':0},\n",
    "    {'service_type':'基础服务','service_name':'adcs日志采集'\n",
    "     ,'online':0.9557,'offline':0,'ca':0.0028,'adx':0,'sdk':0,'san_aff':0.0415,'san_pub':0,'ecom':0,'applist':0,'san_sdk':0},\n",
    "    {'service_type':'基础服务','service_name':'Spark'\n",
    "     ,'online':0.8278,'offline':0,'ca':0.0759,'adx':0.0038,'sdk':0.0188,'san_aff':0,'san_pub':0.0737,'ecom':0,'applist':0,'san_sdk':0},\n",
    "    {'service_type':'分摊','service_name':'分摊-数分'\n",
    "     ,'online':0.252,'offline':0,'ca':0.467,'adx':0.003,'sdk':0.022,'san_aff':0.255,'san_pub':0.001,'ecom':0,'applist':0,'san_sdk':0},\n",
    "     {'service_type':'分摊','service_name':'分摊-other'\n",
    "     ,'online':0.252,'offline':0,'ca':0.467,'adx':0.003,'sdk':0.022,'san_aff':0.255,'san_pub':0.001,'ecom':0,'applist':0,'san_sdk':0},\n",
    "     {'service_type':'分摊','service_name':'分摊-beyla'\n",
    "     ,'online':0.995,'offline':0,'ca':0,'adx':0.0025,'sdk':0.0025,'san_aff':0,'san_pub':0,'ecom':0,'applist':0,'san_sdk':0},\n",
    "]\n",
    "with open(path+'service.txt','w') as fw:\n",
    "    for i in adict:\n",
    "        print(fmt.format(**i))\n",
    "        fw.write(fmt.format(**i)+'\\n')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "fced518e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{service_type}\t{service_name}\t{online}\t{offline}\t{ca}\t{adx}\t{sdk}\t{san_aff}\t{san_pub}\t{ecom}\t{applist}\t{san_sdk}\n",
      "算法模型\tMA\t0.978\t0\t0.012\t0\t0\t0\t0.01\t0\t0\t0\n",
      "算法模型\tMS_EKS\t0.95\t0\t0\t0\t0\t0.048\t0.002\t0\t0\t0\n",
      "算法模型\tMS_gateway\t0.981\t0\t0\t0\t0\t0.019\t0\t0\t0\t0\n",
      "算法模型\tSpark\t0.75\t0\t0.13\t0\t0\t0.12\t0\t0\t0\t0\n",
      "算法模型\tFlink\t0.75\t0\t0.13\t0\t0\t0.12\t0\t0\t0\t0\n",
      "算法模型\tGPU\t0.323\t0\t0\t0\t0\t0.677\t0\t0\t0\t0\n",
      "算法模型\t其他\t0.74\t0\t0.13\t0\t0\t0.13\t0\t0\t0\t0\n",
      "算法模型\tkafka\t0.88\t0\t0.06\t0\t0\t0.06\t0\t0\t0\t0\n",
      "算法模型\tS3\t0.88\t0\t0.06\t0\t0\t0.06\t0\t0\t0\t0\n",
      "算法模型\tRedis\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\n",
      "算法模型\tShareStore\t0.646\t0\t0.306\t0\t0\t0.048\t0\t0\t0\t0\n"
     ]
    }
   ],
   "source": [
    "adict=[\n",
    "{\"service_type\":\"算法模型\",\"service_name\":\"MA\",\"online\":0.978,\"offline\":0,\"ca\":0.012,\"adx\":0,\"sdk\":0,\"san_aff\":0,\"san_pub\":0.01,\"ecom\":0,\"applist\":0,\"san_sdk\":0},\n",
    "{\"service_type\":\"算法模型\",\"service_name\":\"MS_EKS\",\"online\":0.95,\"offline\":0,\"ca\":0,\"adx\":0,\"sdk\":0,\"san_aff\":0.048,\"san_pub\":0.002,\"ecom\":0,\"applist\":0,\"san_sdk\":0},\n",
    "{\"service_type\":\"算法模型\",\"service_name\":\"MS_gateway\",\"online\":0.981,\"offline\":0,\"ca\":0,\"adx\":0,\"sdk\":0,\"san_aff\":0.019,\"san_pub\":0,\"ecom\":0,\"applist\":0,\"san_sdk\":0},\n",
    "{\"service_type\":\"算法模型\",\"service_name\":\"Spark\",\"online\":0.75,\"offline\":0,\"ca\":0.13,\"adx\":0,\"sdk\":0,\"san_aff\":0.12,\"san_pub\":0,\"ecom\":0,\"applist\":0,\"san_sdk\":0},\n",
    "{\"service_type\":\"算法模型\",\"service_name\":\"Flink\",\"online\":0.75,\"offline\":0,\"ca\":0.13,\"adx\":0,\"sdk\":0,\"san_aff\":0.12,\"san_pub\":0,\"ecom\":0,\"applist\":0,\"san_sdk\":0},\n",
    "{\"service_type\":\"算法模型\",\"service_name\":\"GPU\",\"online\":0.323,\"offline\":0,\"ca\":0,\"adx\":0,\"sdk\":0,\"san_aff\":0.677,\"san_pub\":0,\"ecom\":0,\"applist\":0,\"san_sdk\":0},\n",
    "{\"service_type\":\"算法模型\",\"service_name\":\"其他\",\"online\":0.74,\"offline\":0,\"ca\":0.13,\"adx\":0,\"sdk\":0,\"san_aff\":0.13,\"san_pub\":0,\"ecom\":0,\"applist\":0,\"san_sdk\":0},\n",
    "{\"service_type\":\"算法模型\",\"service_name\":\"kafka\",\"online\":0.88,\"offline\":0,\"ca\":0.06,\"adx\":0,\"sdk\":0,\"san_aff\":0.06,\"san_pub\":0,\"ecom\":0,\"applist\":0,\"san_sdk\":0},\n",
    "{\"service_type\":\"算法模型\",\"service_name\":\"S3\",\"online\":0.88,\"offline\":0,\"ca\":0.06,\"adx\":0,\"sdk\":0,\"san_aff\":0.06,\"san_pub\":0,\"ecom\":0,\"applist\":0,\"san_sdk\":0},\n",
    "{\"service_type\":\"算法模型\",\"service_name\":\"Redis\",\"online\":1,\"offline\":0,\"ca\":0,\"adx\":0,\"sdk\":0,\"san_aff\":0,\"san_pub\":0,\"ecom\":0,\"applist\":0,\"san_sdk\":0},\n",
    "{\"service_type\":\"算法模型\",\"service_name\":\"ShareStore\",\"online\":0.646,\"offline\":0,\"ca\":0.306,\"adx\":0,\"sdk\":0,\"san_aff\":0.048,\"san_pub\":0,\"ecom\":0,\"applist\":0,\"san_sdk\":0}\n",
    "]\n",
    "print(fmt)\n",
    "with open(path+'algo.txt','w') as fw:\n",
    "    for i in adict:\n",
    "        print(fmt.format(**i))\n",
    "        fw.write(fmt.format(**i)+'\\n')\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "ee0f303f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# a=\"\"\"\n",
    "# 算法模型\tMA\t0.978\t0\t0.012\t0\t0\t0\t0.01\n",
    "# 算法模型\tMS_EKS\t0.95\t0\t0\t0\t0\t0.048\t0.002\n",
    "# 算法模型\tMS_gateway\t0.981\t0\t0\t0\t0\t0.019\t0\n",
    "# 算法模型\tSpark\t0.75\t0\t0.13\t0\t0\t0.12\t0\n",
    "# 算法模型\tFlink\t0.75\t0\t0.13\t0\t0\t0.12\t0\n",
    "# 算法模型\tGPU\t0.323\t0\t0\t0\t0\t0.677\t0\n",
    "# 算法模型\t其他\t0.74\t0\t0.13\t0\t0\t0.13\t0\n",
    "# 算法模型\tkafka\t0.88\t0\t0.06\t0\t0\t0.06\t0\n",
    "# 算法模型\tS3\t0.88\t0\t0.06\t0\t0\t0.06\t0\n",
    "# 算法模型\tRedis\t1\t0\t0\t0\t0\t0\t0\n",
    "# 算法模型\tShareStore\t0.646\t0\t0.306\t0\t0\t0.048\t0\n",
    "# \"\"\".strip()\n",
    "# for i in a.split('\\n'):\n",
    "#     (a1,a2,b1,b2,b3,b4,b5,b6,b7)=i.split('\\t')\n",
    "#     print('{{\"service_type\":\"{}\",\"service_name\":\"{}\",\"online\":{},\"offline\":{},\"ca\":{},\"adx\":{},\"sdk\":{},\"san_aff\":{},\"san_pub\":{},\"ecom\":0,\"applist\":0,\"san_sdk\":0}},'.format(a1,a2,b1,b2,b3,b4,b5,b6,b7))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "66bce9bd",
   "metadata": {},
   "outputs": [],
   "source": [
    "cost_online_df.createOrReplaceTempView('t_cost_online')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "a4cc2655",
   "metadata": {},
   "outputs": [],
   "source": [
    "cost_online_pu_df=spark.sql(\"\"\"\n",
    "select\n",
    "t1.dt,pu_type,pu\n",
    ",t1.online*t2.online as online\n",
    ",t1.offline*t2.offline as offline\n",
    ",t1.ca*t2.ca as ca\n",
    ",t1.adx*t2.adx as adx\n",
    ",t1.sdk*t2.sdk as sdk\n",
    ",t1.san_aff*t2.san_aff as san_aff\n",
    ",t1.san_pub*t2.san_pub as san_pub\n",
    "from (\n",
    "select\n",
    "dt\n",
    ",sum(online) online\n",
    ",sum(offline) offline\n",
    ",sum(ca) ca\n",
    ",sum(adx) adx\n",
    ",sum(sdk) sdk\n",
    ",sum(san_aff) san_aff\n",
    ",sum(san_pub) san_pub\n",
    "from t_cost_online\n",
    "group by dt\n",
    ")t1\n",
    "left join\n",
    "(\n",
    "select dt,pu_type,pu,online,offline,ca,adx,sdk,san_aff,san_pub from t_pu\n",
    ")t2 on t1.dt=t2.dt\n",
    "\n",
    "\"\"\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "fb24d5ec",
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# cost_online_pu_df.write.mode('overwrite').csv(outpath,header=True) \n",
    "cost_online_df.write.mode('overwrite').csv(outpath,header=True) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "295626ba",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'SAN-SDK',\n",
       " 'cleaner.phoneclean.booster.antivirus',\n",
       " 'com.adwhatsapp',\n",
       " 'com.aerowhatsapp.rt',\n",
       " 'com.alertpear.fastloan2',\n",
       " 'com.aoctopus.chat',\n",
       " 'com.apkpure.aegon',\n",
       " 'com.arabsada.news',\n",
       " 'com.benqu.wuta',\n",
       " 'com.fmwhatsapp',\n",
       " 'com.fmwhatsapp.rt',\n",
       " 'com.funmaker.gamematrix',\n",
       " 'com.gb',\n",
       " 'com.gbwhatsapp.hina',\n",
       " 'com.hawhatsapp',\n",
       " 'com.hiscene.video',\n",
       " 'com.jason.wallpaper',\n",
       " 'com.lctech.luckywords',\n",
       " 'com.mynovel.romancestory',\n",
       " 'com.noxgroup.app.cleaner',\n",
       " 'com.openmediation.sdk.demo',\n",
       " 'com.paulaugustel.bomber',\n",
       " 'com.play.game.bit',\n",
       " 'com.playplay.game',\n",
       " 'com.pluswhatsapp.rt',\n",
       " 'com.san.sansample',\n",
       " 'com.security.antivirus.clean',\n",
       " 'com.tblenovo.launcher',\n",
       " 'com.twist.ballbrick',\n",
       " 'com.twist.stackball',\n",
       " 'com.ushareit.open',\n",
       " 'com.video.downloader.vidtube',\n",
       " 'com.yowhatsapp',\n",
       " 'com.yowhatsapp.rt',\n",
       " 'enjoy.clicks.restime',\n",
       " 'free.videoplayer.musicplayer.mxplayer',\n",
       " 'free.vpn.nicevpn',\n",
       " 'happygames.io',\n",
       " 'io.jojoy',\n",
       " 'io.voodoo.voodoosaucetestapp',\n",
       " 'kingmodapk.mobi',\n",
       " 'max.files.manager',\n",
       " 'ru.galya.drawjoust',\n",
       " 'timemachine.timeunknown.settingpast.status_saver_kotlin',\n",
       " 'vidma.screenrecorder.videorecorder.videoeditor.lite'}"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "set(['SAN-SDK'\n",
    "                , 'cleaner.phoneclean.booster.antivirus'\n",
    "                , 'com.aerowhatsapp.rt'\n",
    "                , 'com.alertpear.fastloan2'\n",
    "                , 'com.aoctopus.chat'\n",
    "                , 'com.fmwhatsapp.rt'\n",
    "                , 'com.funmaker.gamematrix'\n",
    "                , 'com.gb'\n",
    "                , 'com.hiscene.video'\n",
    "                , 'com.jason.wallpaper'\n",
    "                , 'com.lctech.luckywords'\n",
    "                , 'com.mynovel.romancestory'\n",
    "                , 'com.playplay.game'\n",
    "                , 'com.pluswhatsapp.rt'\n",
    "                , 'com.san.sansample'\n",
    "                , 'com.video.downloader.vidtube'\n",
    "                , 'com.yowhatsapp'\n",
    "                , 'com.yowhatsapp.rt'\n",
    "                , 'free.vpn.nicevpn'\n",
    "                , 'happygames.io'\n",
    "                , 'io.jojoy'\n",
    "                , 'max.files.manager'\n",
    "                , 'ru.galya.drawjoust'\n",
    "                , 'timemachine.timeunknown.settingpast.status_saver_kotlin'\n",
    "                , 'vidma.screenrecorder.videorecorder.videoeditor.lite'\n",
    "                , 'com.ushareit.open'\n",
    "                , 'free.videoplayer.musicplayer.mxplayer'\n",
    "                , 'com.paulaugustel.bomber'\n",
    "                , 'com.twist.stackball'\n",
    "                , 'com.twist.ballbrick'\n",
    "                , 'io.voodoo.voodoosaucetestapp'\n",
    "                , 'enjoy.clicks.restime'\n",
    "                , 'com.openmediation.sdk.demo'\n",
    "                , 'com.noxgroup.app.cleaner'\n",
    "                , 'com.fmwhatsapp'\n",
    "                , 'com.hawhatsapp'\n",
    "                , 'com.adwhatsapp'\n",
    "                , 'com.video.downloader.vidtube'\n",
    "                , 'com.apkpure.aegon'\n",
    "                , 'com.benqu.wuta'\n",
    "                , 'com.gbwhatsapp.hina'\n",
    "                , 'kingmodapk.mobi'\n",
    "                , 'com.play.game.bit'\n",
    "                , 'com.security.antivirus.clean'\n",
    "                , 'com.tblenovo.launcher'\n",
    "                , 'com.arabsada.news'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8d1f09a4",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "python",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
